﻿#pragma warning disable IDE1006
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WUDI.ECharts.Geo.Emphasis
{
	public class Label
	{

		/// <summary>
		/// 是否显示标签。
		/// </summary>
		public dynamic show { get; set; }  = false;

		/// <summary>
		/// 标签的位置
		/// <para>
		/// 支持
		/// </para>
		/// <para>
		/// top / left / right / bottom / inside / insideLeft / insideRight / insideTop / insideBottom / insideTopLeft / insideBottomLeft / insideTopRight / insideBottomRight
		/// </para>
		/// <para>
		/// 也可以用一个数组表示相对的百分比或者绝对像素值表示标签相对于图形包围盒左上角的位置
		/// </para>
		/// <para>
		/// 参见
		/// </para>
		/// <para>
		/// label position
		/// </para>
		/// <para>
		/// <see href="https://echarts.apache.org/examples/zh/view.html?c=doc-example/label-position"/>
		/// </para>
		/// <para>string/Array</para>
		/// </summary>
		public dynamic position { get; set; } 

		/// <summary>
		/// 距离图形元素的距离
		/// <para>
		/// 当 position 为字符描述值（如 top、insideRight）时候有效
		/// </para>
		/// <para>
		/// 参见
		/// </para>
		/// <para>
		/// label position
		/// </para>
		/// <para>
		/// <see href="https://echarts.apache.org/examples/zh/editor.html?c=doc-example/label-position"/>
		/// </para>
		/// </summary>
		public dynamic distance { get; set; }  = 5;

		/// <summary>
		/// 标签旋转
		/// <para>
		/// 从 -90 度到 90 度
		/// </para>
		/// <para>
		/// 正值是逆时针
		/// </para>
		/// <para>
		/// 参见
		/// </para>
		/// <para>
		/// label rotation
		/// </para>
		/// <para>
		/// <see href="https://echarts.apache.org/examples/zh/editor.html?c=bar-label-rotation"/>
		/// </para>
		/// </summary>
		public WUDI.ECharts.Rotate rotate { get; set; } 

		/// <summary>
		/// 是否对文字进行偏移
		/// <para>
		/// 默认不偏移
		/// </para>
		/// <para>
		/// 例如
		/// </para>
		/// <para>
		/// [30, 40] 表示文字在横向上偏移 30，纵向上偏移 40
		/// </para>
		/// </summary>
		public dynamic offset { get; set; } 

		/// <summary>
		/// 标签内容格式器，支持字符串模板和回调函数两种形式，字符串模板与回调函数返回的字符串均支持用 \n 换行
		/// <para>
		/// 字符串模板
		/// </para>
		/// <para>
		/// {a}
		/// </para>
		/// <para>
		/// 系列名
		/// </para>
		/// <para>
		/// {b}
		/// </para>
		/// <para>
		/// 数据名
		/// </para>
		/// <para>
		/// {c}
		/// </para>
		/// <para>
		/// 数据值
		/// </para>
		/// <para>
		/// {@xxx}
		/// </para>
		/// <para>
		/// 数据中名为xxx的维度的值，如{@product}表示名为product` 的维度的值
		/// </para>
		/// <para>
		/// {@[n]}
		/// </para>
		/// <para>
		/// 数据中维度n的值，如{@[3]}` 表示维度 3 的值，从 0 开始计数
		/// </para>
		/// <para>
		/// 回调函数
		/// </para>
		/// <para>string/Function</para>
		/// </summary>
		public dynamic formatter { get; set; } 

		/// <summary>
		/// 文字的颜色。
		/// 如果设置为 auto，则为视觉映射得到的颜色，如系列色。
		/// </summary>
		public dynamic color { get; set; }  = "#fff";

		/// <summary>
		/// 文字字体的风格。
		/// normal
		/// italic
		/// oblique
		/// </summary>
		public WUDI.ECharts.FontStyle fontStyle { get; set; }  = WUDI.ECharts.FontStyle.normal;

		/// <summary>
		/// 文字字体的粗细
		/// <para>
		/// normal
		/// </para>
		/// <para>
		/// bold
		/// </para>
		/// <para>
		/// bolder
		/// </para>
		/// <para>
		/// lighter
		/// </para>
		/// <para>
		/// 100 | 200 | 300 | 400...
		/// </para>
		/// </summary>
		public WUDI.ECharts.FontWeight fontWeight { get; set; }  = WUDI.ECharts.FontWeight.normal;

		/// <summary>
		/// 文字的字体系列
		/// <para>
		/// 还可以是 serif , monospace, Arial, Courier New, Microsoft YaHei, ...
		/// </para>
		/// </summary>
		public dynamic fontFamily { get; set; }  = "sans-serif";

		/// <summary>
		/// 文字的字体大小。
		/// </summary>
		public dynamic fontSize { get; set; }  = 12;

		/// <summary>
		/// 文字水平对齐方式，默认自动。
		/// left
		/// center
		/// right
		/// </summary>
		public WUDI.ECharts.Align align { get; set; } 

		/// <summary>
		/// 文字垂直对齐方式，默认自动。
		/// top
		/// middle
		/// bottom
		/// </summary>
		public dynamic verticalAlign { get; set; } 

		/// <summary>
		/// 行高。
		/// </summary>
		public dynamic lineHeight { get; set; } 

		/// <summary>
		/// 文字块背景色
		/// <para>
		/// 可以使用颜色值，例如
		/// </para>
		/// <para>
		/// #123234, red, rgba(0,23,11,0.3)
		/// </para>
		/// <para>
		/// 当使用图片的时候，可以使用 width 或 height 指定高宽，也可以不指定自适应
		/// </para>
		/// <para>
		/// 如果设置为 auto，则为视觉映射得到的颜色，如系列色
		/// </para>
		/// </summary>
		public dynamic backgroundColor { get; set; }  = "transparent";

		/// <summary>
		/// 文字块边框颜色。
		/// 如果设置为 auto，则为视觉映射得到的颜色，如系列色。
		/// </summary>
		public dynamic borderColor { get; set; }  = "transparent";

		/// <summary>
		/// 文字块边框宽度。
		/// </summary>
		public dynamic borderWidth { get; set; }  = 0;

		/// <summary>
		/// 文字块的圆角。
		/// <para>number/Array</para>
		/// </summary>
		public dynamic borderRadius { get; set; }  = 0;

		/// <summary>
		/// padding: [3, 4, 5, 6]
		/// <para>
		/// 表示 [上, 右, 下, 左] 的边距
		/// </para>
		/// <para>
		/// padding: 4
		/// </para>
		/// <para>
		/// 表示 padding: [4, 4, 4, 4]
		/// </para>
		/// <para>
		/// padding: [3, 4]
		/// </para>
		/// <para>
		/// 表示 padding: [3, 4, 3, 4]
		/// </para>
		/// <para>
		/// 注意，文字块的 width 和 height 指定的是内容高宽，不包含 padding
		/// </para>
		/// <para>number/Array</para>
		/// </summary>
		public dynamic padding { get; set; }  = 0;

		/// <summary>
		/// 文字块的背景阴影颜色。
		/// </summary>
		public dynamic shadowColor { get; set; }  = "transparent";

		/// <summary>
		/// 文字块的背景阴影长度。
		/// </summary>
		public dynamic shadowBlur { get; set; }  = 0;

		/// <summary>
		/// 文字块的背景阴影 X 偏移。
		/// </summary>
		public dynamic shadowOffsetX { get; set; }  = 0;

		/// <summary>
		/// 文字块的背景阴影 Y 偏移。
		/// </summary>
		public dynamic shadowOffsetY { get; set; }  = 0;

		/// <summary>
		/// 文字块的宽度
		/// <para>
		/// 一般不用指定，不指定则自动是文字的宽度
		/// </para>
		/// <para>
		/// 在想做表格项或者使用图片（参见 backgroundColor）时，可能会使用它
		/// </para>
		/// <para>
		/// 注意，文字块的 width 和 height 指定的是内容高宽，不包含 padding
		/// </para>
		/// <para>
		/// width 也可以是百分比字符串，如 100%
		/// </para>
		/// <para>
		/// 表示的是所在文本块的 contentWidth（即不包含文本块的 padding）的百分之多少
		/// </para>
		/// <para>
		/// 之所以以 contentWidth 做基数，因为每个文本片段只能基于 content box 布局
		/// </para>
		/// <para>
		/// 如果以 outerWidth 做基数，则百分比的计算在实用中不具有意义，可能会超出
		/// </para>
		/// <para>
		/// 注意，如果不定义 rich 属性，则不能指定 width 和 height
		/// </para>
		/// </summary>
		public dynamic width { get; set; } 

		/// <summary>
		/// 文字块的高度
		/// <para>
		/// 一般不用指定，不指定则自动是文字的高度
		/// </para>
		/// <para>
		/// 在使用图片（参见 backgroundColor）时，可能会使用它
		/// </para>
		/// <para>
		/// 注意，文字块的 width 和 height 指定的是内容高宽，不包含 padding
		/// </para>
		/// <para>
		/// 注意，如果不定义 rich 属性，则不能指定 width 和 height
		/// </para>
		/// </summary>
		public dynamic height { get; set; } 

		/// <summary>
		/// 文字本身的描边颜色。
		/// 如果设置为 auto，则为视觉映射得到的颜色，如系列色。
		/// </summary>
		public dynamic textBorderColor { get; set; }  = "transparent";

		/// <summary>
		/// 文字本身的描边宽度。
		/// </summary>
		public dynamic textBorderWidth { get; set; }  = 0;

		/// <summary>
		/// 文字本身的阴影颜色。
		/// </summary>
		public dynamic textShadowColor { get; set; }  = "transparent";

		/// <summary>
		/// 文字本身的阴影长度。
		/// </summary>
		public dynamic textShadowBlur { get; set; }  = 0;

		/// <summary>
		/// 文字本身的阴影 X 偏移。
		/// </summary>
		public dynamic textShadowOffsetX { get; set; }  = 0;

		/// <summary>
		/// 文字本身的阴影 Y 偏移。
		/// </summary>
		public dynamic textShadowOffsetY { get; set; }  = 0;

		/// <summary>
		/// 在 rich 里面，可以自定义富文本样式
		/// <para>
		/// 利用富文本样式，可以在标签中做出非常丰富的效果
		/// </para>
		/// <para>
		/// 详情参见教程
		/// </para>
		/// <para>
		/// 富文本标签
		/// </para>
		/// <para>
		/// tutorial.html#%E5%AF%8C%E6%96%87%E6%9C%AC%E6%A0%87%E7%AD%BE
		/// </para>
		/// </summary>
		public dynamic rich { get; set; } 

	}
}